const {createOrUpdate,findCarts, updateCarts, removeCarts,selectAllCarts,unselectAllCarts} = require('../service/cart.service')
const {cartFormatError}=require('../constant/err.type')
class CartController {
    //添加购物车
    async add(ctx){
       //将商品添加到购物车
       //1.解析user_id,goods_id
       const user_id = ctx.state.user.id
       const goods_id= ctx.request.body.goods_id
       console.log(user_id,goods_id);
    //    操作数据库
        const res=await createOrUpdate(user_id, goods_id)
        //返回结果
        ctx.body={
            code:200,
            message:'添加购物车成功',
            data:res 
        }
      
           
       } 

    //获取购物车列表
    async findAll(ctx){
      //解析pageNum和pageSize
      const {pageNum=1,pageSize=10}=ctx.request.query
      //操作数据库
      try{
        const res= await findCarts(pageNum,pageSize)
        //返回结果
        ctx.body={
            code:200,
            message:'获取购物车列表成功',
            data:res
        }
      } catch (err) {
        console.error(err);
      }
     
    }

    //更新购物车
    async update(ctx){
      //解析参数
      const {id}=ctx.request.params
      const {number,selected}=ctx.request.body
      if(number===undefined&&selected===undefined){
        cartFormatError.message='更新购物车失败，参数不能为空'  //将错误信息传递给全局错误处理中间件
        ctx.app.emit('error',cartFormatError,ctx)
        return;  
      }
      //操作数据库
      try{
        const res= await updateCarts({id,number,selected})  
        //返回结果
        ctx.body={
            code:200,
            message:'更新购物车成功',
            data:res
        }
      } catch (err) {
        console.error(err); 
      }
    }

    //删除购物车
    async remove(ctx){
      const {ids}=ctx.request.body
      //操作数据库
      try{
        const res= await removeCarts(ids)
      //返回结果
      ctx.body={
          code:200,
          message:'删除购物车成功',
          data:res
      }

      }
      catch (err) {
        console.error(err);
      }
      
     
    }

    //全选
    async selectAll(ctx){
      //解析参数
      const user_id = ctx.state.user.id
      //操作数据库
      try{
        const res= await selectAllCarts(user_id)  
        //返回结果
        ctx.body={
            code:200,
            message:'全部选中',
            data:res
        }
      } catch (err) {
        console.error(err);
      }
    }

    //全不选
    async unselectAll(ctx){
      //解析参数
      const user_id = ctx.state.user.id 
      //操作数据库
      try{
        const res= await unselectAllCarts(user_id)
        //返回结果
        ctx.body={
            code:200,
            message:'全部不选中',
            data:res
        }  
      } catch (err) {
        console.error(err);
      }
    }


}





module.exports = new CartController()